package com.ruoyi.system.media;

import com.alibaba.fastjson2.annotation.JSONField;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.CpcEf02;
import lombok.Data;

import java.util.Arrays;
import java.util.stream.Stream;

/**
 * CPC卡过站信息文件(DF/EF02)的解码信息
 */
@Data
public class CpcEf02Model {
    /**
     * 通行省份个数(01-01,1,n)
     * 入口车道置1，经过省界入口ETC门架时累加
     */
    @JSONField(ordinal = 1)
    public int nProvSum = 0;

    /**
     * 本省门架个数(02-02,1,n)
     * 即当前通行省份内所有途径ETC门架个数
     */
    @JSONField(ordinal = 2)
    public int nGanySum = 0;

    /**
     * 本省累计金额(03-05,3,n)
     * 当前通行省份内所有途径ETC门架（ 含拟合门架）的累计计费金额
     * MTC - 为实收金额,不进行元整处理
     */
    @JSONField(ordinal = 3)
    public int cLoclTol = 0;

    /**
     * 本省计费里程(06-08,3,n)
     * 当前通行省份内所有途径ETC门架（ 含拟合） 对应的累计计费里程， 单位米
     */
    @JSONField(ordinal = 4)
    public int cMileSum = 0;

    /**
     * 本省入口ETC门架信息(09-11,3,bn)
     * 省界入口ETC门架或省内第一个ETC门架的信息
     * 3字节ETC门架编码 ，入口收费站3字节ETC门架编码填入0x00
     */
    @JSONField(ordinal = 5)
    public String cEntyHex = "000000";

    /**
     * 本省入口时间(12-15,4,n)
     * UNIX时间
     */
    @JSONField(ordinal = 6)
    public long cEntyTms = 0L;

    /**
     * 最新过门架编码(16-18,3,bn)
     */
    @JSONField(ordinal = 7)
    public String cNewsGay = "000000";

    /**
     * 最新过门架时间(19-22,4,n)
     * UNIX时间
     */
    @JSONField(ordinal = 8)
    public long cNewsTms = 0L;

    /**
     * 最新过门架计费金额(23-25,3,n)
     */
    @JSONField(ordinal = 9)
    public int cNewsTol = 0;

    /**
     * 最新过门架计费里程(26-28,3,n)
     */
    @JSONField(ordinal = 10)
    public int cNewsLng = 0;

    /**
     * 过站信息中写入的门架数量(29-29,1,n)
     */
    @JSONField(ordinal = 11)
    public int nStanSum = 0;

    /**
     * 过站门架HEXS(30-101,72,bn)
     * 3字节门架编号,共计可记录24个门架
     */
    @JSONField(serialize = false, deserialize = false)
    public String[] cStanDat = new String[24];

    /**
     * CPC卡CPC卡过站信息文件(DF/EF02)的解码信息
     */
    public CpcEf02Model() {
        for (int a = 0; a < cStanDat.length; a++) {
            cStanDat[a] = "";
        }
    }

    public CpcEf02Model clonex(CpcEf02 cpcEf02) {
        CpcEf02Model model = new CpcEf02Model();
        model.nProvSum = cpcEf02.getnProvSum();
        model.nGanySum = cpcEf02.getnGanySum();
        model.cLoclTol = cpcEf02.getcLoclTol().intValue();
        model.cMileSum = cpcEf02.getcMileSum().intValue();
        model.cEntyHex = cpcEf02.getcEntyHex();
        model.cEntyTms = cpcEf02.getcEntyTms().toInstant().toEpochMilli() / 1000;
        model.cNewsGay = cpcEf02.getcNewsGay();
        model.cNewsTms = cpcEf02.getcNewsTms().toInstant().toEpochMilli() / 1000;
        model.cNewsTol = cpcEf02.getcNewsTol().intValue();
        model.cNewsLng = cpcEf02.getcNewsLng().intValue();
        model.nStanSum = cpcEf02.getnStanSum();

        String[] len = cNewsGay.split(",");
//        model.cStanDat = Stream.concat(
//                        Arrays.stream(len),
//                        Stream.generate(() -> "").limit(20 - len.length)
//                )
//                .limit(20)
//                .toArray(String[]::new);
//        System.out.println("model.cStanDat");
//        System.out.println(model.cStanDat);
        model.cStanDat = len;
        return model;
    }
}
